package com.java.yz.day15;

//public static ExecutorService newFixedThreadPool(int nThreads)
//创建一个线程池，该线程池重用在共享无界队列上运行的固定数量的线程，
// 并在需要时使用提供的 ThreadFactory 创建新线程。

//public static ExecutorService newCachedThreadPool()
//	创建一个具有缓存功能的线程池
//	缓存：百度浏览过的信息再次访问
//public static ExecutorService newFixedThreadPool(int nThreads)
//	创建一个可重用的，具有固定线程数的线程池
//public static ExecutorService newSingleThreadExecutor()
//	创建一个只有单线程的线程池，相当于上个方法的参数是1

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

//Executors工具类来创建线程池
public class ThreadPoolDemo1 {
    public static void main(String[] args) {
        //这样就创建好了一个线程池
        ExecutorService pool = Executors.newFixedThreadPool(3);  //这个名称从thread-1开始

        /*
            Future<?> submit(Runnable task)
            //提交一个可运行的任务执行，并返回一个该任务的未来

            <T> Future<T> submit(Callable<T> task)
            //提交值返回任务以执行，并返回代表任务待处理结果的Future.

         */
        pool.submit(new MyCallable());
        pool.submit(new MyCallable());
        pool.submit(new MyCallable());
//        pool.submit(new MyRunnable());
//        pool.submit(new MyRunnable());
//        pool.submit(new MyRunnable());
//        pool.submit(new MyRunnable());  //虽然只有三个线程，但另外一个会等待他的执行完有空间就执行
        pool.shutdown();


        //创建线程的第三种方式:实现Callable接口，实现call方法

    }
}
